var express = require('express')

var DB = require('../../modules/db')

var mutiparty = require('multiparty')

/*
*
*  上传图片处理
*
*  var form = new  mutiparty.Form()
*
*  form.uploadDir = 'upload' 上传图片保存的地址
*
*  form.parse(req, function (err, fields, files) {
*
*       //获取提交的数据以及文件
*
*  })
*
*  html页面form表单页面要加入enctype="mutiparty/form-data"
*
* */

var fs = require('fs')

var router = express.Router()  /*可使用express.Router类创建模块化,可挂载的路由句柄*/


 //商品列表
router.get('/', function (req, res) {
    //获取get传值id
    var title = req.query.title
    var data;
    if (title) {
        const reg=new RegExp(title,'i');//不区分大小写
        data = {'title':{$regex:reg}}
    }else {
        data = {}
    }
    //连接数据库
    DB.find('product',data,function (err,data) {
        if (err) {
            console.log(err)
            return
        }

        res.render('admin/product/index',{
            products: data,
            searchName: title
        })
    })

})

router.post('/search', function (req, res) {

    var form = new mutiparty.Form()
    form.parse(req, function (err, fields, files) {
        console.log(fields)
        //将上传数据保存到数据库
        var searchName = fields.searchName[0]
        res.redirect('/admin/product?title='+searchName)
    })
})

//添加商品
router.get('/add', function (req, res) {

    res.render('admin/product/add')

})

//获取表单提交的数据
router.post('/doAdd', function (req, res) {

    var form = new mutiparty.Form()
    form.uploadDir = 'upload'
    form.parse(req, function (err, fields, files) {

        //获取提交的数据以及文件
        console.log(fields)

        console.log(files)

        //将上传数据保存到数据库
        var title = fields.title[0]
        var price = fields.price[0]
        var fee = fields.fee[0]
        var description = fields.description[0]

        var pic = files.pic[0].path

        DB.insert('product',{
            'title': title,
            price,
            fee,
            description,
            pic
        },function (err, data) {
            if (err) {
                console.log('数据插入失败');
            }else {
                // console.log(data)
                res.redirect('/admin/product')
            }
        })
    })
})

//编辑商品
router.get('/edit', function (req, res) {

    //获取get传值id
    var id = req.query.id

    //数据库生成的自增长id要用 new DB.ObjectID(id)

    //数据库查询id对应的数据
    DB.find('product',{
        '_id': new DB.ObjectID(id)
    }, function (err, data) {

        res.render('admin/product/edit',{list:data[0]})

    })

})

//修改成表单提交的数据
router.post('/doEdit', function (req, res) {


    //数据库生成的自增长id要用 new DB.ObjectID(id)

    var form = new mutiparty.Form()
    form.uploadDir = 'upload'
    form.parse(req, function (err, fields, files) {

        //获取提交的数据以及文件
        console.log(fields)

        console.log(files)

        //获取隐藏表单域传值id
        var id = fields._id[0]
        //将上传数据保存到数据库
        var title = fields.title[0]
        var price = fields.price[0]
        var fee = fields.fee[0]
        var description = fields.description[0]

        var pic = files.pic[0].path

        var setData
        //判断图片是否为空
        var originalFileName = files.pic[0].originalFilename
        if (originalFileName) {
            setData = {
                'title': title,
                price,
                fee,
                description,
                pic
            }

            DB.find('product',{
                '_id': new DB.ObjectID(id)
            }, function (err, data) {
                if (!err) {
                    console.log('data is', data)
                    fs.unlink(data[0].pic,function () {

                    })
                }
            })
        }else {
            setData = {
                'title': title,
                price,
                fee,
                description,
            }
            //删除生成的临时文件
            fs.unlink(pic,function () {

            })
        }

        DB.update('product',{'_id':new DB.ObjectID(id)},setData,function (err, data) {
            if (err) {
                console.log('数据修改失败');
            }else {
                // console.log(data)
                res.redirect('/admin/product')
            }
        })
    })
})

//删除商品
router.get('/del', function (req, res) {
    //获取get传值id
    var id = req.query.id

    //数据库生成的自增长id要用 new DB.ObjectID(id)

    //数据库删除id对应的数据

    //删除生成的临时文件
    DB.find('product',{
        '_id': new DB.ObjectID(id)
    }, function (err, data) {

        if (!err) {

            fs.unlink(data[0].pic,function () {

            })

            DB.deleteOne('product',{
                '_id': new DB.ObjectID(id)
            }, function (err, data) {

                if (!err) {
                    res.redirect('/product')
                }

            })
        }
    })

})



module.exports = router